package com.cherry.config;

/**
 * @create 2020-09-03 10:18 上午
 * @function: 可以通过配置类的方式自定义不同cacheName的缓存时间
 * 在配置文件中需要添加 spring.main.allow-bean-definition-overriding: true
 **/
// @EnableCaching
// @Configuration
// public class CacheConfig extends CachingConfigurerSupport {
//
//     @Bean
//     public CacheManager cacheManager() {
//         RedisCacheConfiguration defaultCacheConfig = RedisCacheConfiguration.defaultCacheConfig()
//                 .entryTtl(Duration.ofDays(1)) // 默认没有特殊指定的
//                 .computePrefixWith(cacheName -> "caching:" + cacheName);
//
//         // 针对不同cacheName，设置不同的过期时间
//         Map<String, RedisCacheConfiguration> initialCacheConfiguration = new HashMap<String, RedisCacheConfiguration>() {{
//             put("seckill", RedisCacheConfiguration.defaultCacheConfig().entryTtl(Duration.ofHours(1))); //1小时
//             put("demoCar", RedisCacheConfiguration.defaultCacheConfig().entryTtl(Duration.ofMinutes(10))); // 10分钟
//             // ...
//         }};
//
//         RedisCacheManager redisCacheManager = RedisCacheManager.builder(redisConnectionFactory())
//                 .cacheDefaults(defaultCacheConfig) // 默认配置（强烈建议配置上）。  比如动态创建出来的都会走此默认配置
//                 .withInitialCacheConfigurations(initialCacheConfiguration) // 不同cache的个性化配置
//                 .build();
//         return redisCacheManager;
//     }
//
//     @Bean
//     public RedisConnectionFactory redisConnectionFactory() {
//         RedisStandaloneConfiguration configuration = new RedisStandaloneConfiguration();
//         configuration.setHostName("10.211.55.6");
//         configuration.setPort(6379);
//         configuration.setDatabase(0);
//         LettuceConnectionFactory factory = new LettuceConnectionFactory(configuration);
//         return factory;
//     }
//
//     @Bean
//     public RedisTemplate<String, String> stringRedisTemplate() {
//         RedisTemplate<String, String> redisTemplate = new StringRedisTemplate();
//         redisTemplate.setConnectionFactory(redisConnectionFactory());
//         return redisTemplate;
//     }
//
// }
